Introducción al análisis de clases latentes- Pre-taller

¿De cuál de las siguientes maneras, si es que hay alguna, has solidarizado con Gaza?

Andrés González-Santa Cruz

Estudiante Doctorado en Salud Pública, Investigador joven, nDP

7 de ago, 2025

Indice

expandir para código
#eliminar archivos previos y limpiar la memoria del entorno
rm(list=ls());gc()

#Definir el repositorio sobre el que instalar los paquetes desde Chile
options(repos=structure(c(CRAN="https://cran.dcc.uchile.cl/"))) 

#ver si puede activarse un paquete; si no, lo instala
#para cambiar la fuente de las letras
if(!require(showtext)){install.packages("showtext")}
#para elaborar gráficos
if(!require(ggplot2)){install.packages("ggplot2")}
#para elaborar gráficos interactivos
if(!require(plotly)){install.packages("plotly")}
#Para separar gráficos
if(!require(grid)){install.packages("grid")}
#Para separar gráficos, ampliado
if(!require(gridExtra)){install.packages("gridExtra")}
#para mostrar imágenes
if(!require(magick)){install.packages("magick")}
#para hacer tablas e interactuar con informes
if(!require(knitr)){install.packages("knitr")}
#para manipular bases de datos
if(!require(tidyverse)){install.packages("tidyverse")}
#para importar y exportar bases de datos en distintos formatos
if(!require(rio)){install.packages("rio")}
#para explorar variables
if(!require(psych)){install.packages("psych")}
#para paralelizar los procesos en la CPU
if(!require(parallel)){install.packages("parallel")}
#hace lo mismo
if(!require(doParallel)){install.packages("doParallel")}

#Para llevar a cabo análissi de clases latentes
if(!require(glca)){install.packages("glca")}

#para generar gráficos esquemáticos
if(!require(DiagrammeR)){install.packages("DiagrammeR")}
#para exportar esos gráficos
if(!require(DiagrammeRsvg)){install.packages("DiagrammeRsvg")}
#para transformar gráficos en formato .svg
if(!require(rsvg)){install.packages("rsvg")}
#para visualizarlos en una presentación
if(!require(htmlwidgets)){install.packages("htmlwidgets")}
#permite limpiar bases de datos, entre otras funciones
if(!require(janitor)){install.packages("janitor")}

# Activar showtext
#showtext_auto()

# Agregar la fuente Oswald desde Google Fonts
#font_add_google(name = "Oswald", family = "Oswald")
  • Introducción a R y la investigación reproducible:
    • Software estadístico e investigación
    • Introducción a R y RStudio: interfaz para programar en R o entorno de desarrollo integrado IDE, ventajas/desventajas
    • Instalación
    • Proyectos en R, configurarlo, guardar conjuntos de datos, lógica de directorio (códigos, referencias, salidas de código, figuras), convenciones y buenas prácticas para guardar y abrir datos.
    • Recursos en línea
  • Carga de datos
    • Qué es una función y un paquete
    • Bases de datos (formatos, pro y contras), Estructura de datos (identificar, variables y niveles de medición, valores)
    • Funciones y usos básicos en R: operadores, objetos, funciones, vectores, data.frames, estructura de funciones y estructuras de control

Software estadístico e Investigación

  • Los software estadísticos son necesarios para realizar investigación cuantitativa
  • Reducen considerablemente el tiempo que necesitamos para procesar, limpiar y analizar bases de datos
  • No todos los software estadísticos se utilizan para investigación (Ej: Excel, Python)
  • Generalmente se utiliza SPSS, STATA o R
  • Cada software tiene sus ventajas y desventajas dependiendo de la tarea que necesitemos realizar

R y RStudio

A la hora de elegir qué utilizará, debe considerar estos atributos

  • Flexible
  • Actualizaciones constantes
  • Fácil automatización e integración
  • Muchos recursos en-línea y comunidades
  • Útil para ser enseñado a estudiantes
  • Investigación Reproducible
  • Gratis - Fuente Abierta
  • Permite ver “tras bambalinas”

  • No tan intuitivo
  • No tan confiable
  • A ratos muy flexible
  • No cuenta con soporte oficial
  • Requiere tiempo

Ventajas/Desventajas de RStudio

  • Entorno de Desarrollo Integrado para R
  • Control de versiones
  • Paneles múltiples
  • Permite automatizar algunas funciones de R (Knitr)
  • Fácil Depurador (errores)
  • Eficienta Recursos Computacionales
  • Cuenta con soporte, versiones en servidor y grandes desarrolladores
  • Algo inestable en determinadas tareas es (Ej. “Figure margins too large”)
  • Tareas exigentes computacionalmente pueden ser más lentas

Ventajas/Desventajas de RStudio (2)

Instalación

  • En la página pudieron ver cómo se instalaba R, ¿Alguna duda?

  • Problemas frecuentes:

    • Microsoft R vs. R, Arquitectura SO (64bits vs. 32bits),

    • Conectar al servidor de repositorios (firewall, puertas de enlace bloqueadas, permisos de administrador, etc.),

    • y un montón de cosas que se resuelven leyendo en internet.

    • Ver el siguiente ENLACE

  • Instalar R: ENLACE

  • Instalar RStudio: ENLACE

Entorno/Espacio de Trabajo

  • Editor de texto o códigos (ACTUALIZACIÓN: Editor Visual Markdown)
  • Lugar de trabajo (objetos, historial, control de versiones) (ACTUALIZACIÓN: Se agregó Tutorial)
  • Consola para ejecutar comandos y ver resultados
  • Multitabla (gráficos, archivos, paquetes, visor) (ACTUALIZACIÓN: Se agregó “Presentation”)

Entorno/Espacio de Trabajo (2)

  • Rstudio permite crear un Proyecto (.Rproj), agrupa a todos los elementos. Puede gestionarlos aquí:

  • Directorio: Ubicación a alojar archivos parte del entorno de trabajo. Se obtiene por getwd(). Configurarlo es muy importante (setwd([RUTA])).
  • .rds: Permite guardar bases de datos de manera individual (como un excel, .csv, etc.)
  • .Rdata: Permite guardar múltiples datos, objetos, funciones, etc., Permite guardar el espacio de trabajo en general (save.image(file =[RUTA]) para guardar todo; save guarda sólo ciertos objetos en un .Rdata, load([RUTA]) para restaurar). Puede hacerlo también desde aquí:

  • .R: Archivo de texto plano para guardar comandos, anotaciones, etc. Similar a un archivo .do o sintaxis. Se recomienda guardar scripts antes de cerrar la sesión. .Rdata no es lo mismo que .R, RECUÉRDELO.

Ejemplo directorio trabajo de un proyecto

expandir para código
#NULL (default) / TRUE (open) / FALSE (closed) 
path<-
list.files("./", full.names = TRUE, recursive = TRUE)

library(data.tree)
library(plyr)

a <- lapply(strsplit(path, "/"), function(z) as.data.frame(t(z)))
a <- rbind.fill(a)
mytree <- data.tree::as.Node(data.frame(pathString = path))
                                         levelName
1   .                                             
2    ¦--_data                                     
3    ¦   ¦--palestine.RData                       
4    ¦   ¦--palestine_25.RData                    
5    ¦   °--palestine2.RData                      
6    ¦--_figs                                     
7    ¦   ¦--_fig2_comparison_glca.png             
8    ¦   ¦--_fig3_LCA_glca.png                    
9    ¦   ¦--_fig4_LCA_glca.png                    
10   ¦   ¦--_fig4_LCA_patrones_respuesta.png      
11   ¦   ¦--1.PNG                                 
12   ¦   ¦--1_2.PNG                               
13   ¦   ¦--10.PNG                                
14   ¦   ¦--11.PNG                                
15   ¦   ¦--12.PNG                                
16   ¦   ¦--13.PNG                                
17   ¦   ¦--14a.PNG                               
18   ¦   ¦--14b.PNG                               
19   ¦   ¦--15.PNG                                
20   ¦   ¦--16.PNG                                
21   ¦   ¦--17.PNG                                
22   ¦   ¦--1b.png                                
23   ¦   ¦--2.PNG                                 
24   ¦   ¦--2b.png                                
25   ¦   ¦--3.PNG                                 
26   ¦   ¦--3b.png                                
27   ¦   ¦--4.PNG                                 
28   ¦   ¦--4b.png                                
29   ¦   ¦--5.PNG                                 
30   ¦   ¦--5b.png                                
31   ¦   ¦--6.PNG                                 
32   ¦   ¦--6b.png                                
33   ¦   ¦--7.PNG                                 
34   ¦   ¦--8.PNG                                 
35   ¦   ¦--9.PNG                                 
36   ¦   ¦--advertencias.jpg                      
37   ¦   ¦--clasificacion_dura.png                
38   ¦   ¦--consola.png                           
39   ¦   ¦--CURSO-COMPUTACION-ALONSO.jpg          
40   ¦   ¦--dir_Travolta.gif                      
41   ¦   ¦--ejemplo_latex.png                     
42   ¦   ¦--Ejercicio20.png                       
43   ¦   ¦--entorno_de_trabajo.PNG                
44   ¦   ¦--excel_error.jpeg                      
45   ¦   ¦--guardar_load_rdata.PNG                
46   ¦   ¦--haciendo_graf_excel-ezgif.com-crop.gif
47   ¦   ¦--haciendo_graf_excel.mp4               
48   ¦   ¦--Instalacion R- MAC (0).PNG            
49   ¦   ¦--Instalacion R- Win (0).PNG            
50   ¦   ¦--Instalacion R- Win (1).PNG            
51   ¦   ¦--Instalacion R- Win (2).PNG            
52   ¦   ¦--Instalacion R- Win (3).PNG            
53   ¦   ¦--Instalacion R- Win (4).PNG            
54   ¦   ¦--Instalacion R- Win (5).PNG            
55   ¦   ¦--Instalacion R- Win (6).PNG            
56   ¦   ¦--Instalacion R- Win (7).PNG            
57   ¦   ¦--Instalacion R- Win (8).PNG            
58   ¦   ¦--Instalacion R- Win (9).PNG            
59   ¦   ¦--Instalacion Rstudio- Win (1).PNG      
60   ¦   ¦--Instalacion Rstudio- Win (2).PNG      
61   ¦   ¦--Instalacion Rstudio- Win (3).PNG      
62   ¦   ¦--Instalacion Rstudio- Win (4).PNG      
63   ¦   ¦--Instalacion_final.PNG                 
64   ¦   ¦--instalacion_Rstudio1.gif              
65   ¦   ¦--instalacion_Rstudio1.mov              
66   ¦   ¦--instalacion_Rstudio2.gif              
67   ¦   ¦--instalacion_Rstudio2.mov              
68   ¦   ¦--instalacion_Rstudio3.gif              
69   ¦   ¦--instalacion_Rstudio3.mov              
70   ¦   ¦--install_package.png                   
71   ¦   ¦--LCA_glca_resp.html                    
72   ¦   ¦--LCA_glca_resp_files                   
73   ¦   ¦   ¦--crosstalk-1.2.1                   
74   ¦   ¦   ¦   ¦--css                           
75   ¦   ¦   ¦   ¦   °--crosstalk.min.css         
76   ¦   ¦   ¦   ¦--js                            
77   ¦   ¦   ¦   ¦   ¦--crosstalk.js              
78   ¦   ¦   ¦   ¦   ¦--crosstalk.js.map          
79   ¦   ¦   ¦   ¦   ¦--crosstalk.min.js          
80   ¦   ¦   ¦   ¦   °--crosstalk.min.js.map      
81   ¦   ¦   ¦   °--scss                          
82   ¦   ¦   ¦       °--crosstalk.scss            
83   ¦   ¦   ¦--htmltools-fill-0.5.8.1            
84   ¦   ¦   ¦   °--fill.css                      
85   ¦   ¦   ¦--htmltools-fill-0.5.8              
86   ¦   ¦   ¦   °--fill.css                      
87   ¦   ¦   ¦--htmlwidgets-1.6.4                 
88   ¦   ¦   ¦   °--htmlwidgets.js                
89   ¦   ¦   ¦--jquery-3.5.1                      
90   ¦   ¦   ¦   ¦--jquery-AUTHORS.txt            
91   ¦   ¦   ¦   ¦--jquery.js                     
92   ¦   ¦   ¦   ¦--jquery.min.js                 
93   ¦   ¦   ¦   °--jquery.min.map                
94   ¦   ¦   ¦--plotly-binding-4.10.4             
95   ¦   ¦   ¦   °--plotly.js                     
96   ¦   ¦   ¦--plotly-htmlwidgets-css-2.11.1     
97   ¦   ¦   ¦   °--plotly-htmlwidgets.css        
98   ¦   ¦   ¦--plotly-main-2.11.1                
99   ¦   ¦   ¦   °--plotly-latest.min.js          
100  ¦   ¦   °--... 1 nodes w/ 1 sub              
101  ¦   °--... 4 nodes w/ 2 sub                  
102  °--... 31 nodes w/ 268 sub                   

Ejercicio

  • Parta un proyecto nuevo (con las consideraciones dichas)
  • Tome las siguiente base de datos (copie y pegue en la consola):
expandir para código
#importante poner asis para que no eche a perder la salida
data <- data.frame(
  Folio = c(1297, 986, 971, 949, 940, 1740, 1875, 1567, 699, 887, 1641, 964, 1635, 2084, 2047, 1310, 803, 1977, 1685, 1776, 1129, 1697, 1682, 1228),
  Curso = factor(c('5A', '5B', '5C', '5A', '5A', '5A', '5A', '5B', '5B', '5B', '5A', '5B', '5A', '5B', '5C', '5C', '5A', '5A', '5A', '5A', '5A', '5B', '5A', '5A')),
  Sexo = factor(c('F', 'F', 'F', 'F', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'M', 'M', 'F', 'F', 'F', 'F', 'F', 'M', 'F', 'F', 'F', 'M', 'F')),
  Peso = c(67.9, 43.9, 33.6, 33.2, 32.9, 26.2, 34.4, 36.6, 32.0, 52.2, 23.8, 40.6, 59.1, 33.4, 38.7, 41.8, 32.0, 35.8, 54.7, 67.3, 23.7, 44.2, 58.2, 43.7),
  Talla = c(158.0, 143.0, 147.0, 136.5, 138.0, 132.5, 141.0, 137.0, 136.5, 142.0, 132.5, 139.0, 141.0, 140.5, 141.5, 143.5, 140.0, 144.5, 153.0, 154.0, 133.0, 137.5, 143.0, 149.5),
  IMC = c(27.2, 21.5, 15.5, 17.8, 17.3, 14.9, 17.3, 19.5, 17.2, 25.9, 13.6, 21.0, 29.7, 16.9, 19.3, 20.3, 16.3, 17.1, 23.4, 28.4, 13.4, 23.4, 28.5, 19.6),
  zimc = c(2.146, 1.286, -0.756, 0.318, 0.110, -1.109, 0.221, 0.909, 0.228, 2.066, -2.101, 1.348, 2.396, 0.109, 0.767, 1.151, -0.373, -0.006, 1.791, 2.241, -2.176, 1.646, 2.318, 0.943),
  estado_zimc = c(3, 2, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, 3, 0, 0, 2, 0, 0, 3, 3, 1, 3, 3, 0),
  Clasifnut = factor(c('Obeso', 'Sobrepeso', 'Normal', 'Normal', 'Normal', 'Normal', 'Normal', 'Normal', 'Normal', 'Obeso', 'Bajo peso', 'Sobrepeso', 'Obeso', 'Normal', 'Normal', 'Sobrepeso', 'Normal', 'Normal', 'Obeso', 'Obeso', 'Bajo peso', 'Obeso', 'Obeso', 'Normal'))
)

structure(list(Folio = c(1297, 986, 971, 949, 940, 1740, 1875, 1567, 699, 887, 1641, 964, 1635, 2084, 2047, 1310, 803, 1977, 1685, 1776, 1129, 1697, 1682, 1228), Curso = structure(c(1L, 2L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L), levels = c(“5A”, “5B”, “5C”), class = “factor”), Sexo = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L), levels = c(“F”, “M”), class = “factor”), Peso = c(67.9, 43.9, 33.6, 33.2, 32.9, 26.2, 34.4, 36.6, 32, 52.2, 23.8, 40.6, 59.1, 33.4, 38.7, 41.8, 32, 35.8, 54.7, 67.3, 23.7, 44.2, 58.2, 43.7), Talla = c(158, 143, 147, 136.5, 138, 132.5, 141, 137, 136.5, 142, 132.5, 139, 141, 140.5, 141.5, 143.5, 140, 144.5, 153, 154, 133, 137.5, 143, 149.5), IMC = c(27.2, 21.5, 15.5, 17.8, 17.3, 14.9, 17.3, 19.5, 17.2, 25.9, 13.6, 21, 29.7, 16.9, 19.3, 20.3, 16.3, 17.1, 23.4, 28.4, 13.4, 23.4, 28.5, 19.6 ), zimc = c(2.146, 1.286, -0.756, 0.318, 0.11, -1.109, 0.221, 0.909, 0.228, 2.066, -2.101, 1.348, 2.396, 0.109, 0.767, 1.151, -0.373, -0.006, 1.791, 2.241, -2.176, 1.646, 2.318, 0.943), estado_zimc = c(3, 2, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, 3, 0, 0, 2, 0, 0, 3, 3, 1, 3, 3, 0), Clasifnut = structure(c(3L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 4L, 3L, 2L, 2L, 4L, 2L, 2L, 3L, 3L, 1L, 3L, 3L, 2L), levels = c(“Bajo peso”, “Normal”, “Obeso”, “Sobrepeso”), class = “factor”)), class = “data.frame”, row.names = c(NA, -24L))

  • Obtenga la media del Peso
  • Guarde los pasos seguidos para utilizar la base de datos y el cálculo de la media (sintaxis)
  • Guarde los resultados en un archivo
  • Cerciórese de que se mantengan en la misma carpeta
  • Cierre y reinicie su computador

Ejercicio: Hágalo usted

  • Su jefe le pide que vea los datos guardados en el proyecto de R adjunto en el enlace.

  • Abra el siguiente enlace y ubique el entorno de trabajo en una carpeta manipulable.

  • Abra el proyecto, los datos, pero no el script

  • Vea las primeras 6 filas del objeto base_datos

  • OPC. Vea las primeras 3 filas

  • ¿A qué llegó?

Ejercicio: Hágalo usted (2)

  • Cree un nuevo proyecto en R

  • Genere la siguiente base de datos recurriendo a este código: set.seed(6789); df2<- data.frame(numeros=round(rnorm(1:300)*100,0))

  • Utilizando tail(df2) obtenga las últimas 6 observaciones

  • Súmelas

  • ¿Llegó al siguiente número: 12?

  • OPC1 = obtenga la media de todos los números (use recursos en línea)

  • OPC2 (+ avanzada)= obtenga el resultado usando comas como separador de decimales (“outdec” en internet)

  • OPC3 = Obtenga la desviación estándar, separando los decimales con comas

  • Guarde los datos y el proyecto

  • Reinicie el computador. Vuelva a abrirlos

Parte 2

Funciones

“To understand computations in R, two slogans are helpful:
Everything that exists is an object.
Everything that happens is a function call.”
— John Chambers

  • Una función define relaciones entre distintos objetos

  • Permite automatizar tareas

  • Pueden contener otras funciones (“anidadas”/“nested”)

  • Algunas tan complejas que requieren muchos argumentos, referencias, condiciones, etc.

  • Compuesta de nombre, argumento (a veces pre-definido) y cuerpo

  • Resultados pueden venir con advertencias (para considerar) o errores (para la ejecución). Nunca ignorar. Buscar en internet.

Funciones(2)

Ejemplo: “head”

  • ¿Cuántas filas entrega por defecto?

  • Esa especificación es un argumento por defecto

  • El cuerpo, no lo vemos

expandir para código
print.function(head)
function (x, ...) 
UseMethod("head")
<bytecode: 0x000001a116890d98>
<environment: namespace:utils>
expandir para código
getAnywhere(head)[2]
function (x, ...) 
UseMethod("head")
<bytecode: 0x000001a116890d98>
<environment: namespace:utils>

Paquetes Estadísticos

  • Una de las características que hace la diferencia entre otros programas.

  • Un paquete estadístico contiene distintas funciones (comandos).

  • Son extensiones de R: Contienen código, datos y documentación estandarizada.

  • Los paquetes en general se alojan en repositorios (CRAN, MRAN, GitHub, and BioConductor).

  • Las librerías son un directorio local que contiene los paquetes instalados

  • En general las librerías tienen archivos de documentación similares a formato Latex, con información de sus versiones, la fuente, etc.

Repositorio CRAN

  • Abra Rstudio y presione Alt + T + G (WIN) o Cmd+, [comma] (Chrome, Desktop), Option+Cmd+, [comma] (Safari, FireFox) (MAC)

  • Veo desde donde consigo los datos, desde que servidor de R

  • Esta es una de las direcciones del CRAN (Comprehensive R Archive Network) correspondiente a Chile.

  • Es recomendable definir por defecto un CRAN cercano.

options(repos=structure(c(CRAN="https://cran.dcc.uchile.cl/")))

Instalación de Paquetes Estadísticos

  • Abra Rstudio, cree un proyecto de nombre “Curso 2”,
  • Abra un Script, escriba en él y ejecútelo (Run)
expandir para código
set.seed(4321) #Creamos una semilla para la generación de datos, 
#de manera que los podamos reproducir
datos<- rnorm(200, 4, .5) #Generamos 200 números aleatorizados, con un promedio 4 y una desviación estándar de 0,5
#siguiendo distribución normal.
promedio_curso <- function(x) {sum(x)/length(x)} #creamos una función que suma 
#datos y los divide por su largo
print(promedio_curso(datos))
[1] 4,026496
expandir para código
print(sum(datos)) #la suma de los datos
[1] 805,2992
expandir para código
print(length(datos)) #el largo de los datos
[1] 200
expandir para código
.libPaths() # ver ubicación de la librería
[1] "C:/Users/andre/AppData/Local/R/win-library/4.4"
[2] "C:/Program Files/R/R-4.4.1/library"            
  • Algo que hacíamos en 2 ejecuciones, lo hicimos en una

Instalación de Paquetes Estadísticos(2)

  • Ingrese en la consola o en un Script, la instalación del paquete “dplyr”, install.packages("dplyr")
  • Habiendo hecho esto, usted está instalando el paquete, pero no lo ha activado ni lo ha abierto
  • Para activarlo momentáneamente (library(dplyr)).
    • “require”, sino “library” (https://stackoverflow.com/q/5595512/9975513)
  • Otros argumentos de la función install.packages:
    • Ubicación de la librería, Repositorio (CRAN, MRAN, Bioconductor,local, etc.), instalar paquetes dependientes, etc.
    • “?” o utilizando la función help()
    • Contradicciones entre sí (ej: plyr y dplyr) –> desactivar o “despegar” un paquete (detach(package:[NOMBRE_PAQUETE]))

expandir para código
#OPC 1- una lista de paquetes estadísticos. Por cada fila, verá si existe el paquete.
#Si no, lo instala sin preguntar desde un repositorio CRAN
if(!require(paquete1)){install.packages("paquete1")}
if(!require(paquete2)){install.packages("paquete2")}
if(!require(paquete3)){install.packages("paquete3")}
if(!require(paquete4)){install.packages("paquete4")}
#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:#:
#OPC. 2- Vemos que una lista de paquetes estadísticos se encuentren instalados; 
#si no lo están, aparece un mensaje
for (n in c("paquete1", "paquete2", "paquete3", "paquete4", "paquete..."))
{
  if(!require(n,character.only=TRUE))
  {
   stop(paste0("El paquete '",n,"' no está instalado: por favor instálelo e inténtelo de nuevo!\n"));
   # install.packages(n) # Si prefiere que lo instale automátiamente.
  }
  library(n,character.only=TRUE)
}
  • Puede ver otros tipos de instaladores como renv::install(), pacman::p_load(, install=T) o pak::pkg_install().

  • Una buena prácticas es utilizar source("___requirements.txt") para cargar las librerías que son comunes a cada etapa de un proyecto (ej., todas las clases).

Ejemplo para partir con un script

#Para cambiar el repositorio
options(repos=structure(c(CRAN="https://cran.dcc.uchile.cl/"))) 

# Limpiar entorno
rm(list = ls()) # limpiar completamente el entorno global environment
gc() # limpiar la memoria virtual utilizada por R
rm() # limpiar un objeto específico

#si no tiene pacman, lo instala
if(!require(pacman)){install.packages("pacman")}

##### Instalar paquetes requeridos (OPCION PRINCIPAL)

if(!require(tidyverse)){install.packages("tidyverse")}
if(!require(psych)){install.packages("psych")}
if(!require(Hmisc)){install.packages("Hmisc")}

##### Cargar paquetes (OTRA ALTERNATIVA)
try(pacman::p_load(tidyverse,   # Probablemente el paquete conjunto de paquetes más últil que usarán en R
               foreign,         # Paquete import datos
               Hmisc,           # Paquete con funciones variadas
               psych,           # Paquete con algunas funciones comúnmente utilizadas (https://personality-project.org/r/psych/intro.pdf)
               install = F))    # solo cargar, no instalar

Gracias

r e s i g n ,   r e f u s e ,   r e d i r e c t ! !

Información de la sesión

expandir para código
#vemos desde donde se producen las librerías
Sys.getenv("R_LIBS_USER")
[1] "C:\\Users\\andre\\AppData\\Local/R/win-library/4.4"
expandir para código
#ponemos información de la sesión: Sistema operativo, paquetes, idisioncracias, etc.
sessionInfo()
R version 4.4.1 (2024-06-14 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 26100)

Matrix products: default


locale:
[1] LC_COLLATE=Spanish_Chile.utf8  LC_CTYPE=Spanish_Chile.utf8   
[3] LC_MONETARY=Spanish_Chile.utf8 LC_NUMERIC=C                  
[5] LC_TIME=Spanish_Chile.utf8    

time zone: America/Santiago
tzcode source: internal

attached base packages:
[1] parallel  grid      stats     graphics  grDevices utils     datasets 
[8] methods   base     

other attached packages:
 [1] plyr_1.8.9        data.tree_1.1.0   janitor_2.2.1     htmlwidgets_1.6.4
 [5] rsvg_2.6.1        DiagrammeRsvg_0.1 DiagrammeR_1.0.11 glca_1.4.0       
 [9] doParallel_1.0.17 iterators_1.0.14  foreach_1.5.2     psych_2.4.12     
[13] rio_1.2.3         lubridate_1.9.4   forcats_1.0.0     stringr_1.5.1    
[17] dplyr_1.1.4       purrr_1.0.4       readr_2.1.5       tidyr_1.3.1      
[21] tibble_3.2.1      tidyverse_2.0.0   knitr_1.49        magick_2.8.5     
[25] gridExtra_2.3     plotly_4.10.4     ggplot2_3.5.1     showtext_0.9-7   
[29] showtextdb_3.0    sysfonts_0.8.9   

loaded via a namespace (and not attached):
 [1] gtable_0.3.6       xfun_0.51          visNetwork_2.1.2   lattice_0.22-6    
 [5] tzdb_0.4.0         vctrs_0.6.5        tools_4.4.1        generics_0.1.3    
 [9] curl_6.2.1         pkgconfig_2.0.3    data.table_1.17.0  RColorBrewer_1.1-3
[13] lifecycle_1.0.4    compiler_4.4.1     munsell_0.5.1      mnormt_2.1.1      
[17] codetools_0.2-20   snakecase_0.11.1   htmltools_0.5.8.1  yaml_2.3.10       
[21] lazyeval_0.2.2     pillar_1.10.1      MASS_7.3-60.2      nlme_3.1-164      
[25] tidyselect_1.2.1   digest_0.6.37      stringi_1.8.4      fastmap_1.2.0     
[29] colorspace_2.1-1   cli_3.6.4          magrittr_2.0.3     withr_3.0.2       
[33] scales_1.3.0       timechange_0.3.0   rmarkdown_2.29     httr_1.4.7        
[37] hms_1.1.3          evaluate_1.0.3     V8_6.0.1           viridisLite_0.4.2 
[41] rlang_1.1.5        Rcpp_1.0.14        glue_1.8.0         rstudioapi_0.17.1 
[45] jsonlite_1.9.1     R6_2.6.1          

Fuentes

  • Boccardo, Giorgio & Ruiz, Felipe. (2018). Uso de RStudio para Estadística Univariada en Ciencias Sociales. Manual de apoyo docente para la asignatura Estadística Descriptiva (1a. Edición). 10.13140/RG.2.2.32783.48803. https://github.com/feliperuizbruzzone/Uso-de-R-para-Estadistica-Social/blob/master/Boccardo%20%26%20Ruiz%20(2018).%20Uso%20de%20RStudio%20para%20Estad%C3%ADstica%20Univariada%20en%20Ciencias%20Sociales%20%5B19%20%20julio%5D.pdf

  • Cano, E. & Moguerza, J. (2015). “R desde el principio. Curso ceRo de R”. Ediciones del Orto, Madrid. ISBN 84-7923-526-8. http://emilio.lcano.com/pub/cero/R-desde-el-principio-curso-cero-V1.02.pdf

  • Ozgur, C., Kleckner, M., & Li, Y. (2015). Selection of Statistical Software for Solving Big Data Problems. SAGE Open, 5(2), 215824401558437. doi:10.1177/2158244015584379

  • Leiden University (2023, April 12). “Goodbye SPSS, hallo R: ‘Now we can help students who like statistics to excel’”. Disponible en: https://www.universiteitleiden.nl/en/news/2023/04/goodbye-spss-hallo-r-now-we-can-help-students-who-like-statistics-to-excel

  • Elosua, P. (2009). ¿Existe vida más allá del SPSS? Descubre R. Psicothema, 21(4),652-655. ISSN: 0214-9915. Disponible en: http://www.psicothema.com/pdf/3686.pdf

  • R Development Core Team (2000). Introducción a R. Notas sobre R: Un entorno de programación para Análisis de Datos y Gráficos. Versión 1.0.1 https://cran.r-project.org/doc/contrib/R-intro-1.1.0-espanol.1.pdf

  • Bryan, J. (2017, Diciembre 12). Project-oriented workflow. https://www.tidyverse.org/blog/2017/12/workflow-vs-script/

  • RStudio Support (2022, Octubre 16). Using RStudio Projects. https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects

  • Stackoverflow. How do I ask a good question?. https://stackoverflow.com/help/how-to-ask

  • Smit, R. (2023, April). Goodbye SPSS, hallo R: ‘Now we can help students who like statistics to excel’. Leiden University. Retrieved from https://www.universiteitleiden.nl/en/news/2023/04/goodbye-spss-hallo-r-now-we-can-help-students-who-like-statistics-to-excel.

timer.utf8